package es.duma.presentation;

import es.duma.util.log.Log;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import javax.servlet.*;
import javax.servlet.http.*;

/**
 * Servlet que maneja las peticiones de acceso a la herramienta multidispositivo de busqueda
 * Realiza la deteccion de terminal de usaurio y entrega la presentacion mas acorde a sus caracteristicas.
 */
public class Index extends HttpServlet {
   
    /**
     * Content type para las respuestas del servlet
     */
    private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
    
    /**
     * Init del Servlet
     * @param config
     * @throws ServletException
     */
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    /**
     * Procesado de la petciones http get contra el Servlet
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response) throws ServletException, IOException {response.setContentType(CONTENT_TYPE);


        PrintWriter out = response.getWriter();
       
        //Se obtiene el documento index segun el terminal del usuario 
        String index_page= PresentationManager.getIndex(request);
        InputStream in=null;
        try{
            index_page=index_page.substring(5);
            in =new FileInputStream(index_page);
        }catch (FileNotFoundException e){
            Log.error(this,"Error al obtener la pagina "+index_page);

        }
        
        Log.debug(this,"Se obtiene la pagina principal desde disco "+index_page);
        // Se envia la pagina abierta a la salida del response
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        StringBuilder result = new StringBuilder();
        String line = null;
        while ((line = br.readLine()) != null) {
            result.append(line + "\n");
        }
        br.close();
        out.println(result);       
        out.close();
    }
}
